#ifndef ENCODING_H
#define ENCODING_H

#include <string>
#include <vector>

namespace qrcode{

class Encoding
{
private:
    std::vector<char> binaryData;
    std::vector<std::vector<char>> codeWords;

    int dataEncodingCode;

    std::vector<char> ECIModeEncoding(std::string &msg);
    std::vector<char> NumericModeEncoding(std::string &msg);
    std::vector<char> AlphanumericModeEncoding(std::string &msg);
    std::vector<char> ByteModeEncoding(std::string &msg);
    std::vector<char> HanziModeEncoding(std::string &msg);

    std::vector<std::vector<char>> BreakUpIntoCodeWords(std::vector<char> data, int capacity);

public:
    Encoding();
    void DoEncoding(std::string &mode, int version, std::string &msg, char &level);
    std::vector<char> GetBinaryData();
    std::vector<std::vector<char> > GetCodeWords();
};

}

#endif // ENCODING_H
